#ifndef __IROTATION_H__
#define __IROTATION_H__

#include "CTypes.h"

class IRotation
{
protected:
	vector3dvpos Rotation;
	vector3dvpos Center;
public:
	IRotation():Rotation((vPos)0.0,(vPos)0.0,(vPos)0.0),Center((vPos)0.0,(vPos)0.0,(vPos)0.0)
	{
	}

	IRotation(vector3dvpos &newRotation):Rotation(newRotation)
	{

	}

	virtual ~IRotation()											{}

	inline vector3dvpos GetRotation()								{	return Rotation;				}
	inline vPos GetRotationX()										{	return Rotation.X;				}
	inline vPos GetRotationY()										{	return Rotation.Y;				}
	inline vPos GetRotationZ()										{	return Rotation.Z;				}
	inline vector3dvpos GetCenterRotation()							{	return Center;					}
	inline vPos GetCenterRotationX()								{	return Center.X;				}
	inline vPos GetCenterRotationY()								{	return Center.Y;				}
	inline vPos GetCenterRotationZ()								{	return Center.Z;				}
	inline void SetRotation(vector3dvpos newv)						{	Rotation.Set(newv);				}
	inline void SetRotation(vPos newX,vPos newY,vPos newZ)		{	Rotation.Set(newX,newY,newZ);	}
	inline void SetCenterRotation(vector3dvpos newcr)				{	Center.Set(newcr);				}
	inline void SetCenterRotation(vPos ncrx,vPos ncry,vPos ncrz)	{	Center.Set(ncrx,ncry,ncrz);		}
	inline void SetCenterRotationX(vPos ncrx)						{	Center.X = ncrx;				}
	inline void SetCenterRotationY(vPos ncry)						{	Center.Y = ncry;				}
	inline void SetCenterRotationZ(vPos ncrz)						{	Center.Z = ncrz;				}
	inline void SetRotationX(vPos newX)							{	Rotation.X = newX;				}
	inline void SetRotationY(vPos newY)							{	Rotation.Y = newY;				}
	inline void SetRotationZ(vPos newZ)							{	Rotation.Z = newZ;				}
	inline stringc GetRotationStr()									{   return Rotation.GetStr();			}
	inline stringc GetCenterStr()									{	return Center.GetStr();			}
};

#endif
